package com.alderfgdev.opendoc.proceso.action;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import sun.reflect.ReflectionFactory.GetReflectionFactoryAction;

import com.alderfgdev.opendoc.proceso.beans.E_Resultado;
import com.alderfgdev.opendoc.proceso.business.N_Archivo;
import com.alderfgdev.opendoc.util.excel.POI;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.net.httpserver.Authenticator.Success;

public class ArchivoAction implements ModelDriven<E_Resultado>,ServletRequestAware{
	HttpServletRequest request;
	private E_Resultado objE_Resultado;
	private File archivo;
	private ArrayList<E_Resultado> lstE_Resultado;
	private InputStream inputStream; 
		
	public String generarExcel(){
		
		ArrayList<E_Resultado> lstCampos = (ArrayList<E_Resultado>) request.getSession().getAttribute("lstE_Resultado");		
		
		inputStream = POI.crearExcelReporteReactivos(lstCampos, request.getSession().getServletContext().getRealPath("/"));
		
		return "success";
	}
	
	public String consultaResultado(){
		System.out.println("CONSULAR RESULTADO");
		System.out.println("-->"+objE_Resultado.getDescripcionPlanta());
		System.out.println("-->"+objE_Resultado.getFecha1());
		System.out.println("-->"+objE_Resultado.getFecha2());
		System.out.println("-->"+objE_Resultado.getRuma());
		System.out.println("-->"+objE_Resultado.getResultado());
		objE_Resultado.setResultado("");
		System.out.println("-->"+objE_Resultado.getActa());
		System.out.println("-->"+objE_Resultado.getLotei());
		System.out.println("-->"+objE_Resultado.getNrmActa());
		
		lstE_Resultado = N_Archivo.consultarResultado(objE_Resultado);
		
		request.getSession().setAttribute("lstE_Resultado", lstE_Resultado);
		
		return "success";
	}
	
	public String consultaProduccion(){
		
		System.out.println("-->"+objE_Resultado.getDescripcionPlanta());
		System.out.println("-->"+objE_Resultado.getFecha1());
		System.out.println("-->"+objE_Resultado.getFecha2());
		System.out.println("-->"+objE_Resultado.getRuma());
		System.out.println("-->"+objE_Resultado.getResultado());
		objE_Resultado.setResultado("");
		System.out.println("-->"+objE_Resultado.getActa());
		System.out.println("-->"+objE_Resultado.getLotei());
		System.out.println("-->"+objE_Resultado.getNrmActa());
		
		lstE_Resultado = N_Archivo.consultarProduccion(objE_Resultado);
		
		request.getSession().setAttribute("lstE_Resultado", lstE_Resultado);
		
		return "success";
	}
	
	public String cargaArchivo(){
		
		System.out.println(archivo);
		
		lstE_Resultado = N_Archivo.cargarArchivo(request,archivo);
		
		return "success";
	}

	public String editarResultado(){
		int id = Integer.parseInt(request.getParameter("id").toString());
		System.out.println("--->"+id);
		this.lstE_Resultado = (ArrayList<E_Resultado>) request.getSession().getAttribute("lstE_Resultado");
		
		objE_Resultado = N_Archivo.seleccionaEditarResultado(lstE_Resultado, id);
		
		System.out.println("--->"+objE_Resultado.getCodigoPlanta());
		
		return "success";
	}
	
	public String grabarResultado(){
		
		System.out.println("----->"+objE_Resultado.getCantidadSacos());
		
		N_Archivo.grabarResultado(request, objE_Resultado);
		this.lstE_Resultado = (ArrayList<E_Resultado>) request.getSession().getAttribute("lstE_Resultado");
		
		objE_Resultado = null;
		
		return "success";
	}
	
	public String grabarArchivo(){
		
		if(N_Archivo.grabarArchivo(request)){
			request.getSession().setAttribute("msjE","Registro Exitoso");
			request.getSession().removeAttribute("lstE_Resultado");
			objE_Resultado = null;
			lstE_Resultado = null;
		}
		
		return "success";
	}
	
	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		this.request = arg0;	
	}

	public void setArchivo(File archivo) {
		this.archivo = archivo;
	}

	public File getArchivo() {
		return archivo;
	}

	public ArrayList<E_Resultado> getLstE_Resultado() {
		return lstE_Resultado;
	}

	public void setLstE_Resultado(ArrayList<E_Resultado> lstEResultado) {
		lstE_Resultado = lstEResultado;
	}

	@Override
	public E_Resultado getModel() {
		// TODO Auto-generated method stub
		return objE_Resultado;
	}

	public void setObjE_Resultado(E_Resultado objE_Resultado) {
		this.objE_Resultado = objE_Resultado;
	}

	public E_Resultado getObjE_Resultado() {
		return objE_Resultado;
	}

	public void setInputStream(InputStream inputStream) {
		this.inputStream = inputStream;
	}

	public InputStream getInputStream() {
		return inputStream;
	}

}
